package dichotomy.sqrt.x;
/**
 * @Time 2020/1/8
 * @author 王光浩
 * @Thingking 三种思路：暴力法、调用系统函数和二分法
 *            暴力法：既然要对x开根号，那么从0开始遍历，返回在第一个平方值比x大元素之前的值。
 *            调用系统函数：Math.sqrt(x)；使用int向下取整。
 *            二分法：在0和x之间使用二分法，判断mid的平方是否
 */
public class MyMethodOne {
    public int mySqrt(int x) {
    	int previous=0;
    	int later=x;
    	int mid;
    	while(later>=previous) {
    		mid=previous+(later-previous)/2;
    		if(mid*mid==x)
    			return mid;
    		else if((long)mid*mid<(long)x)
    			previous=mid+1;
    		else 
    			later=mid-1;
    	}
    	return later;
    }
}
